from dataclasses import dataclass
from typing import Optional

# =========================================================
# ✅ 模型保存配置
# =========================================================
@dataclass
class CheckpointConfig:
    """模型保存与恢复配置"""
    save_dir: str = "./checkpoints/model"         # 模型保存目录
    save_interval: int = 5                  # 每 N 个 epoch 保存一次
    save_best_only: bool = True             # 是否只保存最优模型
    resume_path: Optional[str] = None       # 恢复训练的 checkpoint 路径
    main_metric: Optional[str] = "accuracy"       # 用于评估最优模型的指标名称（如 val_accuracy）

    def summary(self):
        print("💾 模型保存配置")
        print(f"  保存目录: {self.save_dir}")
        print(f"  保存间隔: 每 {self.save_interval} 个 epoch")
        print(f"  仅保存最优: {self.save_best_only}")
        if self.resume_path:
            print(f"  恢复路径: {self.resume_path}")
        if self.main_metric:
            print(f"  主评估指标: {self.main_metric}")